package evemanutool.utils.httpdata;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import evemanutool.data.cache.TradeHistoryEntry;
import evemanutool.utils.file.ParseTools;
public class EveMarketDataQuery {
//URI parts.
private static final String EVEMARKETDATA_ADDR = "http://api.eve-marketdata.com/api/item_history2.xml?char_name=demo";
private static final String EVEMARKETDATA_REGION = "®ion_ids=";
private static final String EVEMARKETDATA_DAYS = "&days=";
private static final String EVEMARKETDATA_PARAM_ID = "&type_ids=";
private static final List<TradeHistoryEntry> EMPTY = Collections.emptyList();
public static List<TradeHistoryEntry> getMarketInfo(Collection<Integer> typeIds, String regCode, int days) {
if (typeIds == null || typeIds.isEmpty()) {
return EMPTY;
}
String eveMarketDataQuery = createQuery(typeIds, regCode, days);
long start = System.currentTimeMillis();
try {
HttpURLConnection conn = (HttpURLConnection) new URL(eveMarketDataQuery).openConnection();
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new IOException(conn.getResponseCode() + " " + conn.getResponseMessage());
}
HistoryParser parser = new HistoryParser(conn.getInputStream(), typeIds, Long.parseLong(regCode));
parser.parse();
conn.disconnect();
System.out.println("Getting history for " + typeIds.size() +
" types (" + days + " days) from eve-marketdata.com... " +
(System.currentTimeMillis() - start) + " ms");
return parser.getResult();
} catch (MalformedURLException e) {
System.err.println(e.toString());
return EMPTY;
} catch (IOException e) {
System.err.println(e.toString() + "\t" + eveMarketDataQuery);
return EMPTY;
}
}
private static String createQuery(Collection<Integer> typeIds, String regCode, int days) {
StringBuilder buf = new StringBuilder(EVEMARKETDATA_ADDR);
buf.append(EVEMARKETDATA_REGION).append(regCode)
.append(EVEMARKETDATA_DAYS).append(days)
.append(EVEMARKETDATA_PARAM_ID).append(ParseTools.join(typeIds, ","));
return buf.toString();
}
}